#ifndef NETLIB_EXCEPTION_H
#define NETLIB_EXCEPTION_H

// 异常类，储存异常信息和函数调用栈

#include "Types.h"
#include <exception>

namespace netlib
{

class Exception : public std::exception
{
public:
    Exception(string msg);
    ~Exception() noexcept override = default;

    // 将异常信息转换成char*返回
    const char* what() const noexcept override { return message_.c_str(); }

    // 将异常函数帧栈转换成char*返回
    const char* stackTrace() const noexcept { return stack_.c_str(); }

    private:
    string message_; // 储存异常信息
    string stack_;    // 储存函数帧栈
};

}  // namespace netlib

#endif